package com.xiye.common.util;

import com.xiye.common.controller.BaseController;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * @author 西野
 * @version V1.0
 * @title DateUtil.java
 * @package com.xiye.common.util
 * @description 日期处理
 * @date 2018-07-12
 */
public class DateUtil extends BaseController {

    /*
     * @Author 西野
     * @Date 2018-07-23 16:28:05
     * @Description 获取YYYYMMDD格式
     * @Param []
     * @Return java.lang.String
     */
    public static String getDays() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        Calendar canlendar = Calendar.getInstance(); // java.util包
        Date date = canlendar.getTime();
        String dateStr = sdf.format(date);
        return dateStr;
    }


    /*
     * @Author 西野
     * @Date 2018-07-23 16:29:24
     * @Description 校验日期是否合法
     * @Param [s]
     * @Return boolean
     */
    public boolean isValidDate(String s) {
        DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
        try {
            fmt.parse(s);
            return true;
        } catch (Exception e) {
            logger.error(e.toString(), e);
            // 如果throw java.text.ParseException或者NullPointerException，就说明格式不对
            return false;
        }
    }

    /*
     * @Author 西野
     * @Date 2018-07-23 16:29:44
     * @Description 时间相减得到年数
     * @Param [startTime, endTime]
     * @Return int
     */
    public int getDiffYear(String startTime, String endTime) {
        DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
        try {
            // long aa=0;
            int years = (int) (((fmt.parse(endTime).getTime() - fmt.parse(startTime).getTime()) / (1000 * 60 * 60 * 24)) / 365);
            return years;
        } catch (Exception e) {
            logger.error(e.toString(), e);
            // 如果throw java.text.ParseException或者NullPointerException，就说明格式不对
            return 0;
        }
    }

    /*
     * @Author 西野
     * @Date 2018-07-23 16:30:14
     * @Description 得到n天之后的日期
     * @Param [days]
     * @Return java.lang.String
     */
    public static String getAfterDayDate(String days) {
        int daysInt = Integer.parseInt(days);

        Calendar canlendar = Calendar.getInstance(); // java.util包
        canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动
        Date date = canlendar.getTime();

        SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateStr = sdfd.format(date);

        return dateStr;
    }

    /*
     * @Author 西野
     * @Date 2018-07-23 16:30:21
     * @Description 得到n天之后是周几
     * @Param [days]
     * @Return java.lang.String
     */
    public static String getAfterDayWeek(String days) {
        int daysInt = Integer.parseInt(days);
        Calendar canlendar = Calendar.getInstance(); // java.util包
        canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动
        Date date = canlendar.getTime();
        SimpleDateFormat sdf = new SimpleDateFormat("E");
        String dateStr = sdf.format(date);
        return dateStr;
    }

}
